<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  
</body>
<script>
  // 赋值式创建函数的值
  // 正常使用
  // const fn = ()=>{
  //   console.log("hello");
  // }
  // fn();
  // 返回值
  // const fn = ()=>{
  //   return "hello world"
  // }
  // console.log(fn());
  // 参数
  // const fn = (n)=>{
  //   return "hello " + n
  // }
  // console.log(fn("admin"));

  // 作为参数
  // fn( ()=>{} )

  // 作为返回值
  // function fn(){
  //   return ()=>{}
  // }

  // 作为事件处理函数
  // btn.onclick = ()=>{}

  // 作为匿名函数的函数体
  // (()=>{})()



  // 完整：()=>{}
  // 极简：=>

  // 当有且只有一个参数时，可以省略小括号
  // const fn = a => {
  //   console.log(a)
  // }
  // fn("hello", "world")

  // 有且直接返回值时，可以省略花括号和return（花括号和retuen必须同时省略）
  // const fn = ()=>"hello"
  // console.log( fn() );

  // const sayHello = a => "hello " + a;
  // console.log( sayHello("admin") );

  // 没有返回值：只省略return
  // const fn = ()=>{
  //   "hello"
  // }
  // console.log(fn())

  // 错误写法：只省略花括号
  // const fn = () => return "hello";
  // console.log(fn())

  // 不能省略
  // const fn = a=>{
  //   let str = "hello " + a;
  //   return str;
  // }

  // 极简语法，直接返回一个对象时，需要将对象套一个小括号
  // const fn = ()=>( {name:"admin"} );
  // console.log(fn())


  // 特性：
  // 语法简洁
  // 可读性差

  // 箭头函数没有自己的this
  // const fn = ()=>{
  //   console.log(this);
  // }
  // fn();

  // const obj = {
  //   show: fn
  // }
  // obj.show();

  // fn.call("hello");


  // 自动使用外层函数的this
  // const obj = {
  //   name:"obj",
  //   show:function(){
  //     setTimeout(()=>{
  //       console.log(this);
  //     }, 1000)
  //   }
  // }
  // obj.show();

  // 不能作为构造函数（不能被new执行）
  // new fn();





  // 使用场景

  // 参数
  // arr.sort((a,b)=>a-b)
  // arr.forEach(val=>console.log(val));
  // arr.map(val=>val*0.3);
  // arr.filter(val=>val%2===0)s;
  // arr.some(val=>val==="data")
  // arr.every(val=>val==="data")
  // arr.reduce((prev,val)=>prev+val, 0)


  // 返回值
  // function fn(){
  //   return ()=>{}
  // }
  // console.log( fn() );


  // 不能使用arguments
  // const fn = ()=>{
  //   console.log(arguments);
  // }
  // fn("helle", 4,5,6,"world");



</script>
</html>